# 将字符串str_1转换为str_2，需要对字符进行插入删除替换三种编辑方式，计算转换一个字符串需要进行的最小变换操作次数（转换代价）
# 例:
# 方法一
# s - n o w y
# s u n n - y
# 转换代价cost = 3（插入u 替换0 删除w）
# 方法二
# - s n o w - y
# s u n - - n y
# 转换代价cost = 5（插入s 替换s 删除o 删除w 插入n）
str1 = 'sdwe'
str2 = 'dsaas'
# 字符串切片超出长度时不会报错
# a = 'asd'
# print('********', a[10:])


def func(str1, str2):
    if len(str1) == 0 or len(str2) == 0:
        return abs(len(str1)-len(str2))
    if str1[0] == str2[0]:
        return func(str1[1:], str2[1:])
    str_ins = func(str1, str2[1:]) + 1
    str_del = func(str1[1:], str2) + 1
    str_rep = func(str1[1:], str2[1:]) + 1
    print(str_ins, str_del, str_rep)
    return min(str_ins, str_del, str_rep)
a = func(str1, str2)
print(a)
